import request from '@/config/axios'

// 合同模板保存vo
export interface TplSaveReqVO {
  // ID，示例值(3516)，类型推测为 number 或 string，这里根据示例值格式，设为 number
  id?: number
  // 模板标识
  code?: string
  // 模板名称，示例值(王五)
  name?: string
  // 参数是否合并;1是 2否，类型为 number，取值一般是 1 或 2
  paramMerge?: number
  // 目录ID,示例值(4842)，类型推测为 number
  dirId?: number
  // 首页页眉页脚是否显示;1是 2否，类型为 number，取值一般是 1 或 2
  firstpageHeaderFooterShow?: number
  // 数据源编码，多个用英文逗号隔开，类型为 string
  datasourceCodes?: string
  // 业务编号
  bizNo?: string
  // 合同类型
  type?: number
  tenants?: Array<TenantInfo>
}

// 项目信息
export interface ProjectInfo {
  parentProjectNo: string // 父项目编码
  projectNo: string // 项目编码
  projectName: string // 项目名称
  projectType: number // 项目类型（接口是 integer，对应 TS 的 number）
  customerUscc: string // 客户统一信用代码
  customerType: number // 客户类型（integer）
  customerName: string // 客户名称
  leader: string // 项目负责人
  leaderPhone: string // 项目负责人电话
  handConfig: string // 装卸货单配置
  hasAssgin: string // 可否业务指派（注意：若接口拼写是 hasAssign，需同步修正）
  hasAyn: string // 可否数据同步（注意：若接口是 hasSync，需修正）
}

// 租户信息
export interface TenantInfo {
  tenantId?: number
  tenantName?: string
  id?: number
  name?: string
}
export interface TplSettingSaveReqVO {
  id?: number // ID,示例值(14580)，是否必须：true，数据类型：integer(int64)
  tplId?: number // 模板id,示例值(5389)，是否必须：true，数据类型：integer(int64)
  header?: string // 页眉，是否必须：false，数据类型：string
  footer?: string // 页脚，是否必须：false，数据类型：string
  main?: string // 内容，是否必须：false，数据类型：string
  margins?: string // 页边距，是否必须：false，数据类型：string
  width?: number // 宽度，是否必须：false，数据类型：integer(int32)
  height?: number // 高度，是否必须：false，数据类型：integer(int32)
  paperDirection?: string // 纸张方向 vertical纵向 horizontal横向，是否必须：false，数据类型：string
  currentPageAttr?: string // 当前页码属性，是否必须：false，数据类型：string
  pageCountAttr?: string // 每页显示条数属性，是否必须：false，数据类型：string
  totalAttr?: string // 数据总条数属性，是否必须：false，数据类型：string
  subParamAttrs?: string // 主表传递给子表的参数属性，是否必须：false，数据类型：string
  isCommon?: number // 是否公共数据集 1是 2否，是否必须：false，数据类型：integer(int32)
  commonType?: number // 类型 1合同报表，是否必须：false，数据类型：integer(int32)
  isConvert?: number // 是否行列转置 1是 2否，是否必须：false，数据类型：integer(int32)
  headerName?: string // 行转列字段，是否必须：false，数据类型：string
  valueField?: string // 行转列值，是否必须：false，数据类型：string
  fixedColumn?: string // 固定列，是否必须：false，数据类型：string
}

/**
 * 管理后台-模板设置新增/修改 Request VO
 */
export interface TplSettingPreviewReqVO {
  tplId: number // 模板id示例值(338)
  paperDirection?: string // 纸张方向 vertical纵向 horizontal横向
  searchData?: any[] // 搜索数据
  pagination?: object // 分页配置
  pageSize?: number // 每页条数
  currentPage?: number // 当前页码
  offSet?: number // 偏移量
  source?: number // 来源标识
  password?: string // 密码
  isValidRole?: number // 角色验证标识
  roleId?: number // 角色id
  isPreview?: number // 是否预览
  tplName?: string // 模板名称
  pdfType?: number // PDF类型
  isCustomerPage?: number // 是否自定义页面
  startPage?: number // 起始页
  endPage?: number // 结束页
  isMobile?: number // 是否移动端
  chartsBase64?: object // 图表base64数据
  taskId?: number // 任务id
  exportType?: number // 导出类型
  sendEmail?: string // 发送邮件
  jobName?: string // 任务名称
  field?: string // 字段
  apiHeaders?: object // API请求头
  isTask?: number // 是否任务
  patination?: boolean // 分页（注：字段名可能为pagination拼写错误）
  large?: boolean // 是否大尺寸
}

export interface ProjectListReqDTO {
  projectName?: string
}

// 目录的请求参数
export interface DirSaveReqVO {
  id: number // ID,示例值(25801)，数据类型为 integer(int64)
  type: number // 目录类型 1: 模板分组 2: 数据集分组,示例值(1)，数据类型为 integer(int32)
  name: string // 目录名称,示例值(王五)，数据类型为 string
  tplId: number // 模板id,示例值(7725)，数据类型为 integer(int64)
}

// 合同模板管理
export const TemplateApi = {
  //  获得合同模版分页列表
  getTplPage: async (params: any) => {
    return await request.get({ url: `/ctr/tpl/page`, params })
  },
  // 获取合同模板
  getTemplate: async (id: number) => {
    return await request.get({ url: `/ctr/tpl/get?id=` + id })
  },
  // 新增
  create: async (data: TplSaveReqVO) => {
    return await request.post({
      url: `/ctr/tpl/create`,
      data
    })
  },
  // 修改
  update: async (data: TplSaveReqVO) => {
    return await request.post({
      url: `/ctr/tpl/update`,
      data
    })
  },
  // 删除合同模板
  deleTeTpl: async (id: number) => {
    return await request.get({ url: `/ctr/tpl/delete?id=` + id })
  },
  deleteTeTpls: async (ids: string) => {
    return await request.get({ url: `/ctr/tpl/delete-list?ids=` + ids })
  },
  // 获取合同模板设置
  getTemplateSetting: async (id: number) => {
    return await request.get({ url: `/ctr/tpl/setting/get?id=` + id })
  },
  //  保存合同模板
  setTemplateSave: async (data: TplSettingSaveReqVO) => {
    return await request.post({ url: `/ctr/tpl/setting/save`, data })
  },
  //  获得项目列表
  getProjectList: async (data: ProjectListReqDTO) => {
    return await request.post({
      url: `/ctr/tpl/project/getProjectList`,
      data
    })
  },
  //  获得租户列表信息
  getTenants: async (params: any) => {
    return await request.get({ url: `/ctr/tpl/tenant/getTenants`, params })
  },
  //  获得目录分页
  getDirPage: async (params: any) => {
    return await request.get({ url: `/ctr/dir/page`, params })
  },
  // 创建目录
  createDir: async (data: DirSaveReqVO) => {
    return await request.post({
      url: `/ctr/tpl/dir/create`,
      data
    })
  },
  // 预览合同模板
  previewTemplate: async (data: TplSettingPreviewReqVO) => {
    return await request.post({
      url: `ctr/tpl/setting/preview`,
      data
    })
  }
}
